맨위로가기

컴포넌트 기반 소프트웨어 공학

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

컴포넌트 기반 소프트웨어 공학(CBSE)은 대규모 시스템 개발 시 규율 있는 문화와 프로세스를 통해 이점을 얻을 수 있는 방법론이다. CBSE는 서드파티 컴포넌트의 활용, UML을 이용한 시스템 시각적 설계, 최종 사용자와 상호 작용하는 컴포넌트의 사용성 테스트를 포함한다. 기술적으로 특정 도메인의 소프트웨어 프레임워크, 컴포넌트 지향 프로그래밍, 컴파운드 도큐먼트 기술, 분산 컴퓨팅 소프트웨어 컴포넌트, 제네릭 프로그래밍, 인터페이스 서술 언어(IDLs) 등이 CBSE에 활용된다.

더 읽어볼만한 페이지

  • 컴포넌트 기반 소프트웨어 공학 - 컴포넌트 오브젝트 모델
    컴포넌트 오브젝트 모델(COM)은 마이크로소프트에서 개발한 소프트웨어 컴포넌트 기술로, 서로 다른 애플리케이션이 객체를 통해 통신하고 기능을 공유할 수 있도록 하는 이진 인터페이스 표준을 제공하며, 다양한 프로그래밍 언어로 작성된 객체들의 상호 운용을 지원한다.
  • 컴포넌트 기반 소프트웨어 공학 - 공통 객체 요구 매개자 구조
    공통 객체 요구 매개자 구조(CORBA)는 객체 관리 그룹(OMG)에서 분산 컴퓨팅 환경에서 객체 지향 기술을 통합하기 위해 제정한 표준 아키텍처로서, 객체 요청 브로커(ORB)를 통해 객체 간 통신을 제공하고 다양한 서비스를 지원한다.
  • 소프트웨어 개발 - 유스 케이스
    유스 케이스는 시스템과 액터 간 상호작용을 통해 시스템 목표 달성에 기여하는 동작들을 나타내는 요구 사항 캡처, 모델링, 명세 기법으로, 객체 지향 소프트웨어 공학에서 기능 요구 사항을 캡처하는 데 중요한 역할을 하며 다양한 분야에서 활용된다.
  • 소프트웨어 개발 - 사용자 경험 디자인
    사용자 경험 디자인은 인간 공학에 기반하여 제품 또는 서비스와 사용자 간의 상호작용을 설계하는 분야이며, 사용자 조사, 인터랙션 디자인, 사용성 테스트 등을 통해 효율적이고 만족스러운 경험을 제공하는 것을 목표로 한다.
  • 객체 지향 프로그래밍 - Is-a
    Is-a 관계는 객체 지향 프로그래밍에서 한 유형이 다른 유형의 하위 유형임을 나타내는 관계로, 상속, 서브타이핑, 리스코프 치환 원칙과 관련되며, C++, Python, Java 등에서 표현된다.
  • 객체 지향 프로그래밍 - 객체 (컴퓨터 과학)
    객체는 객체 지향 프로그래밍에서 데이터와 조작을 묶어 메시지를 수신하고, 프로그램의 개념을 표현하며 가시성과 재사용성을 높이는 실체이다.
컴포넌트 기반 소프트웨어 공학
개요
컴포넌트 기반 소프트웨어 공학의 다이어그램 표현
컴포넌트 기반 소프트웨어 공학의 다이어그램 표현
유형소프트웨어 공학 패러다임
관련 주제소프트웨어 컴포넌트, 서비스 지향 아키텍처
특징
목표소프트웨어 시스템 개발 및 유지 보수 비용 절감, 생산성 향상, 재사용성 증진
기본 원칙독립적인 컴포넌트 조립을 통한 시스템 구축
표준 인터페이스를 통한 컴포넌트 간 상호작용
컴포넌트 재사용 및 교체 용이성
플랫폼 독립성 및 분산 환경 지원
장점
재사용성이미 개발된 컴포넌트를 다른 시스템에서 재사용 가능
생산성 향상컴포넌트 조립을 통해 개발 시간 단축
유지보수 용이성컴포넌트 단위 수정 및 교체 가능
유연성시스템 요구사항 변경에 따른 컴포넌트 교체 용이
품질 향상검증된 컴포넌트 사용으로 시스템 안정성 향상
단점
초기 투자 비용컴포넌트 개발 및 관리 인프라 구축 필요
복잡성 증가컴포넌트 간 인터페이스 관리 및 통합 어려움
성능 저하 가능성컴포넌트 간 통신 오버헤드 발생 가능
의존성 문제특정 컴포넌트에 대한 의존성 증가 가능
핵심 개념
컴포넌트특정 기능을 수행하는 독립적인 소프트웨어 모듈
인터페이스컴포넌트 간 상호작용을 위한 표준화된 접근 방식
아키텍처컴포넌트들을 통합하고 시스템 전체 구조를 정의하는 설계
저장소재사용 가능한 컴포넌트들을 보관하고 관리하는 장소
개발 단계
컴포넌트 식별시스템 요구사항 분석을 통해 필요한 컴포넌트 식별
컴포넌트 설계각 컴포넌트의 기능, 인터페이스, 동작 방식 설계
컴포넌트 구현설계된 컴포넌트를 프로그래밍 언어를 사용하여 구현
컴포넌트 테스트구현된 컴포넌트의 기능 및 성능 검증
컴포넌트 통합컴포넌트들을 조립하여 시스템 구축
시스템 테스트통합된 시스템의 전체적인 기능 및 성능 검증
관련 기술
CORBA분산 객체 환경을 위한 표준 아키텍처
COM마이크로소프트에서 개발한 컴포넌트 기술
EJB자바 기반 엔터프라이즈 컴포넌트 모델
SOA서비스 지향 아키텍처
활용 분야
엔터프라이즈 시스템대규모 비즈니스 애플리케이션 개발
임베디드 시스템특정 기능을 수행하는 하드웨어 내장형 시스템 개발
웹 애플리케이션웹 기반 서비스 개발
모바일 애플리케이션스마트폰 및 태블릿용 애플리케이션 개발
참고 문헌
서적Fundamentals of Software Architecture: An Engineering Approach (O'Reilly Media, 2020)
Component-Based Software Development: Principles, Perspectives Integrating Methodologies
Component-Based Development for Enterprise Systems: Applying the SELECT Perspective
기타Management Information Systems 12/E: Managing the Digital Firm P.539

2. 고려 사항

대규모 팀에서 개발하는 대규모 시스템의 경우, 컴포넌트 기반 소프트웨어 공학(CBSE)의 이점을 얻기 위해 규율 있는 문화와 프로세스가 필요하다.[4] 서드파티 컴포넌트는 대규모 시스템에서 자주 활용된다.

UML를 사용하여 시스템을 시각적으로 설계할 수 있다.

UML에서 두 개의 컴포넌트의 예: 체크아웃은 고객의 주문을 처리하며, 다른 컴포넌트는 신용 카드를 청구해야 한다.
각 컴포넌트는 사각형으로 표시되며, 인터페이스는 제공된 인터페이스를 나타내는 막대 사탕 모양과 인터페이스의 사용을 나타내는 소켓 모양으로 표시된다.

컴포넌트 기반 사용성 테스트는 최종 사용자와 상호 작용하는 컴포넌트를 위한 것이다.

3. 기술

3. 1. 특정 도메인의 컴포넌트 기반 소프트웨어 프레임워크

3. 2. 컴포넌트 지향 프로그래밍



3. 3. 컴파운드 도큐먼트 기술

객체 연결 삽입 (OLE)

3. 4. 분산 컴퓨팅 소프트웨어 컴포넌트

3. 5. 제네릭 프로그래밍

제네릭 프로그래밍은 컴포넌트 기반 소프트웨어 공학의 한 분야이다.

3. 6. 인터페이스 서술 언어 (IDLs)

SOAP IDLXML-RPC는 인터페이스 서술 언어(IDL)이다.[6]

참조

[1] 서적 Component-Based Software Engineering: Putting the Pieces Together Addison-Wesley Professional
[2] 서적 Component Software: Beyond Object-Oriented Programming ACM Press - Pearson Educational
[3] 서적 Fundamentals of Software Architecture: An Engineering Approach O'Reilly Media
[4] 웹사이트 Why Software Reuse has Failed and How to Make It Work for You http://www.dre.vande[...] 2024-05-14
[5] 서적 Management Information Systems 12/E: Managing the Digital Firm P.539 Pearson Education Asia
[6] 서적 Programming Model and Protocols for Reconfigurable Distributed Systems https://www.kth.se/s[...] KTH Royal Institute of Technology 2013-04



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com